class BootStrap {

    def authenticateService

     def init = { servletContext ->

        Role r = new Role(authority: "ROLE_ADMIN", description: "administrator access").save()
        Role o = new Role(authority: "ROLE_USER", description: "user access").save()
        
        User u = new User(
            firstName:"Marek",
            lastName:"Podsiadły",
            passwd:"",
            enabled:true,
            username:"marek@marek.pl",
//            emailShow:false
        )

        String pass = "marek"

        u.passwd = authenticateService.encodePassword(pass)
        u.addToAuthorities(r)
        u.addToAuthorities(o)
        r.addToPeople(u)
        o.addToPeople(u)
        u.save()

        User v = new User(
            firstName:"Ryszard",
            lastName:"Kowalski",
            passwd:"",
            enabled:true,
            username:"test@test.pl",
//            emailShow:false
        )

        String pass1 = "test"

        v.passwd = authenticateService.encodePassword(pass1)
        v.addToAuthorities(o)
        o.addToPeople(v)
        v.save()

        CommitmentType ct1 = new CommitmentType(
            name: "Artykuł",
            description: "Brykiety przyznane za napisanie artykułu").save()
        CommitmentType ct2 = new CommitmentType(
            name: "Wpis na dWorld",
            description: "Brykiety przyznane za wpis na dWorld.pl").save()
        CommitmentType ct3 = new CommitmentType(
            name: "Aukcja",
            description: "Brykiety pobrane za wygraną aukcję").save()

        Commitment c1 = new Commitment(
            value: 50,
            balance: 50,
            description: "Testowe przyznanie punktów",
            user: v,
            commitmentType: ct1).save()
        Commitment c2 = new Commitment(
            value: 100,
            balance: 150,
            description: "Wybitny wkład w zwalczanie stonki ziemniaczanej",
            user: v,
            commitmentType: ct2).save()

        ct1.addToCommitments(c1)
        ct2.addToCommitments(c2)

        v.addToCommitments(c1)
        v.addToCommitments(c2)

        /*
         *Aukcja przykładowa
         */
        def now = new Date()
        def twoWeeks = new Date(now.getTime() + 14L*24L*60L*60L*1000L)
        new Auction(
            title: "Przykładowa aukcja.",
            shortDescription: "Książka o programowaniu",
            description: "Wypasiona książka o programowaniu aplikacji webowych. Zawiera mnóstwo przykładów.",
            begin: now,
            finish: twoWeeks
        ).save()
     }
     def destroy = {
     }
} 